package com.jf3q.common.controller;

import com.jf3q.common.vo.ResultVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;



@RestController
@RequestMapping("/video")
@Tag(name = "视频点播")
public class VideoUploadController {

    @Value("${ali.accesskey}")
    private String accesskey;

    @Value("${ali.secretAccessKey}")
    private String secretAccessKey;

    public com.aliyun.vod20170321.Client createClient() throws Exception {
        // 工程代码泄露可能会导致 AccessKey 泄露，并威胁账号下所有资源的安全性。以下代码示例仅供参考。
        // 建议使用更安全的 STS 方式，更多鉴权访问方式请参见：https://help.aliyun.com/document_detail/378657.html。
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
                .setAccessKeyId(accesskey)
                // 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                .setAccessKeySecret(secretAccessKey);
        // Endpoint 请参考 https://api.aliyun.com/product/vod
        config.endpoint = "vod.cn-shanghai.aliyuncs.com";
        return new com.aliyun.vod20170321.Client(config);
    }
    @GetMapping("/getPlayUrl/{vid}")
    @Operation(summary = "获取播放地址")
    public ResultVo getPlayUrl(@PathVariable String vid) throws Exception {
        com.aliyun.vod20170321.Client client = this.createClient();
        com.aliyun.vod20170321.models.GetVideoPlayAuthRequest getVideoPlayAuthRequest = new com.aliyun.vod20170321.models.GetVideoPlayAuthRequest()
                .setVideoId(vid);
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            com.aliyun.vod20170321.models.GetVideoPlayAuthResponse resp = client.getVideoPlayAuthWithOptions(getVideoPlayAuthRequest, runtime);
            com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(resp));
            return ResultVo.success(resp.getBody().playAuth);
        } catch (Exception error) {
            // 此处仅做打印展示，请谨慎对待异常处理，在工程项目中切勿直接忽略异常。
            // 错误 message
            return ResultVo.error(error.getMessage());
        }
    }


//    @PostMapping("/upload")
//    @Operation(summary = "上传视频")
//    public ResultVo upload(MultipartFile video) throws IOException {
//
//        String originalFilename = video.getOriginalFilename();
//
//        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
//
//        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
//
//        String dataPath = format.format(new Date());
//
//
//        String fileName =dataPath+"/"+ UUID.randomUUID().toString().replace("-","")+suffix;
//
//
//        UploadStreamRequest request = new UploadStreamRequest(accesskey, secretAccessKey, originalFilename, fileName, video.getInputStream());
//        /* 可指定分片上传时每个分片的大小，默认为2M字节 */
//        /* 是否使用默认水印(可选)，指定模板组ID时，根据模板组配置确定是否使用默认水印*/
//        request.setShowWaterMark(true);
//        /* 自定义消息回调设置，参数说明参考文档 https://help.aliyun.com/document_detail/86952.html#UserData */
//
//        request.setCateId(1000579839L);
//        /* 视频标签,多个用逗号分隔(可选) */
//        //request.setTags("标签1,标签2");
//        /* 视频描述(可选) */
//        //request.setDescription("视频描述");
//        /* 封面图片(可选) */
//        request.setCoverURL("https://dengboxiao.oss-cn-hangzhou.aliyuncs.com/banner/2024/05/28/885398ef2d4c4229820cbdcf26224dd6.png");
//        /* 模板组ID(可选) */
//        request.setTemplateGroupId("a09dd4b281cfa831a6effad9424b1af0");
//
//        UploadVideoImpl uploader = new UploadVideoImpl();
//        UploadStreamResponse response = uploader.uploadStream(request);
//        System.out.print("RequestId=" + response.getRequestId() + "\n");  //请求视频点播服务的请求ID
//        if (response.isSuccess()) {
//            System.out.print("VideoId=" + response.getVideoId() + "\n");
//            return ResultVo.success("",response.getVideoId());
//        } else {
//            /* 如果设置回调URL无效，不影响视频上传，可以返回VideoId同时会返回错误码。其他情况上传失败时，VideoId为空，此时需要根据返回错误码分析具体错误原因 */
//            System.out.print("VideoId=" + response.getVideoId() + "\n");
//            System.out.print("ErrorCode=" + response.getCode() + "\n");
//            System.out.print("ErrorMessage=" + response.getMessage() + "\n");
//        }
//
//        return null;
//
//    }

}
